package chixing.day15;

import java.io.File;
import java.util.ArrayList;

public class FileDemo2 {

    public static void main(String[] args) {
//        System.out.println(searchFile("E:\\2025-cx\\project\\PJ\\J01\\Javase", "hello.text"));
        getAllSubFiles("E:\\2025-cx\\project\\PJ\\J01\\Javase");
        for (File f:fileArrayList) {
            System.out.println(f);
        }
    }

    /**
     * 在指定的目录下 查找文件
     *
     * @param path     指定的目录
     * @param fileName 要查找的文件名称
     * @return 若找到该文件，则返回该文件对象；若找不到，则返回null
     */
    public static File searchFile(String path, String fileName) {
        File file = new File(path);
        //获取该文件夹的所有对象
        File[] files = file.listFiles();
        //遍历所有对象，查找到指定文件
        for (File f : files) {
            //判断该文件的文件名与指定文件是否相同,
            if (f.getName().equals(fileName))
                //相同返回该文件对象
                return f;
        }
        //不同返回null
        return null;
    }

    /**
     * 获得指定目录下的所有的子文件，若子文件对象是 文件夹，则继续遍历 直到是子文件对象
     * 注意判断是文件夹还是文件， 以及空文件夹的处理
     *
     * @param path 指定目录
     * @return 返回所有的子文件对象集合
     */
    static ArrayList<File> fileArrayList = new ArrayList<>();
    public static void getAllSubFiles(String path){
        File file = new File(path);
        File[] files = file.listFiles();
        //如果是文件 返回null
        if (file.isFile() )
            return;
        //文件夹为空 返回null
       if (files ==null || files.length==0)
            return;
        //获得所有的子文件
        for (File f:files) {
            if (f.isFile()){
                fileArrayList.add(f);
            }else {
                getAllSubFiles(f.getPath());
            }


        }
    }

//    public static void getAllSubFiles(String path) {
//        File file = new File(path);
//        File[] files = file.listFiles();//获取所有文件对象
//        //如果为空 直接返回null
//        if (path.isEmpty())
//            return;
//        for (File f : files) {
//            //先判断他是不是文件，是文件直接添加到 子文件列表，
//            if (file.isFile())
//                fileArrayList.add(file);
//            getAllSubFiles(f.getAbsolutePath());
//        }
//    }
//    public static List<File> getAllSubFiles(String path){
//        File file = new File(path);
//        File[] files = file.listFiles();
//        //先判断他是不是文件，是文件直接添加到 子文件列表，
//        if(file.isFile())
//            fileArrayList.add(file);
//    //如果为空 直接返回null
//        if (files.length==0)
//            return null;
//    //上面都不是了，那就是文件夹
//    //循环找到该目录下的所有子文件
//        for (File f:files) {
//            getAllSubFiles(f.getAbsolutePath());
//        }
//        return null;
//    }

//
//    public static List<File> getAllSubFiles(String path){
//        ArrayList<File> fileList = new ArrayList<>();
//        getAllSubFiles(fileList,path);
//        return fileList;
//    }
//    public static void getAllSubFiles(List<File> fileList, String path) {
//        File file = new File(path);
//        File[] files = file.listFiles();
//        for (File f : files) {
//            if (f.isDirectory()) {
//                //是文件夹，继续遍历
//                getAllSubFiles(fileList, f.getPath());
//            } else if (f.isFile()) {
//                //是文件，添加到文件集合
//                fileList.add(f);
//            } else {
//                //是空文件
//                return;
//            }
//
//        }
//
//    }

}
